package com.cms.recursoshumanos.json.object;


import com.cms.recursoshumanos.json.me.JSONArray;
import com.cms.recursoshumanos.json.me.JSONException;
import com.cms.recursoshumanos.json.me.JSONObject;

import com.cms.recursoshumanos.cache.ListaSolicitudCompraCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.object.Articulo;
import com.cms.recursoshumanos.object.ArticuloCarrito;
import com.cms.recursoshumanos.object.SolicitudCompra;
import com.cms.recursoshumanos.object.TipoArticulo;
import com.cms.recursoshumanos.object.TipoStatus;
import com.cms.recursoshumanos.object.list.ListaArticuloCarrito;
import com.cms.recursoshumanos.object.list.ListaSolicitudCompra;
import com.cms.recursoshumanos.utilities.Tool;


public class JsonObjectGetSolicitudCompra 
{

	private static JsonObjectGetSolicitudCompra _instance = null;
	public static JsonObjectGetSolicitudCompra getInstance() {
		if(_instance == null)
			_instance = new JsonObjectGetSolicitudCompra();
		
		return _instance;
	}
	public JsonObjectGetSolicitudCompra()
	{
	
	}
	private String Result;
	private static final String
	
			GETSOLICITUDCOMPRA = "GETSOLICITUDCOMPRA",
			GETSOLICITUDCOMPRA_STATUS = "STATUS",
			GETSOLICITUDCOMPRA_DATA = "DATA",
			GETSOLICITUDCOMPRA_DATOS_SOL_COMPRA = "DATOS_SOL_COMPRA",
			GETSOLICITUDCOMPRA_DATOS_ARTICULO = "DATOS_ARTICULO",
					
		
			GETSOLICITUDCOMPRA_SOLICITUD_COMPRA_ID = "solicitud_compra_id",
			GETSOLICITUDCOMPRA_FECHA_SOLICITUD_COMPRA = "fecha_solicitud_compra",
			GETSOLICITUDCOMPRA_TOTAL_SOLICITUD_COMPRA = "total_solicitud_compra",
			GETSOLICITUDCOMPRA_DESCRIPCION_SOLICITUD_COMPRA = "descripcion_solicitud_compra",
			GETSOLICITUDCOMPRA_TIPO_STATUS_ID = "tipo_status_id",
			GETSOLICITUDCOMPRA_NOMBRE_TIPO_STATUS = "nombre_tipo_status",
			
			GETSOLICITUDCOMPRA_ARTICULO_ID = "articulo_id",
			GETSOLICITUDCOMPRA_NOMBRE_ARTICULO = "nombre_articulo",
			GETSOLICITUDCOMPRA_CODIGO_ARTICULO = "codigo_articulo",
			GETSOLICITUDCOMPRA_FOTO_ARTICULO = "url_foto_articulo",
			GETSOLICITUDCOMPRA_TIPO_ARTICULO_ID = "tipo_articulo_id",
			GETSOLICITUDCOMPRA_NOMBRE_TIPO_ARTICULO = "nombre_tipo_articulo",
			GETSOLICITUDCOMPRA_PRECIO_UNITARIO_ARTICULO = "precio_unitario_articulo",
			GETSOLICITUDCOMPRA_CANTIDAD_SOLICITADA_ARTICULO = "cantidad_solicitud_compra";
			


	public void fromJSON (String jsonString) 
	{
		if (jsonString != null)
		{
			if (!jsonString.equals(""))
			{
				try
				{
					JSONObject jsonObject = new JSONObject(jsonString);
				
					if (jsonObject != null) 
					{
						
						JSONObject getSolicitudCompra = jsonObject.getJSONArray(GETSOLICITUDCOMPRA).getJSONObject(0);
						String status = getSolicitudCompra.getString(GETSOLICITUDCOMPRA_STATUS);
						
						Result = status;
						
						if (status.equals(Constant.CODE_OK))
						{
							
							JSONArray data = getSolicitudCompra.getJSONArray(GETSOLICITUDCOMPRA_DATA);
							
							JSONObject objeto_data = data.getJSONObject(0);
							JSONArray datos_sol_compra = objeto_data.getJSONArray(GETSOLICITUDCOMPRA_DATOS_SOL_COMPRA);
		
							ListaSolicitudCompra listado = new ListaSolicitudCompra();
							
							for (int i = 0; i < datos_sol_compra.length(); i++ )
							{
									
								JSONObject json_solicitud_compra = datos_sol_compra.getJSONObject(i);
								listado.addSolicitudCompra(getSolicitudCompra(json_solicitud_compra));
									
											
							}
							ListaSolicitudCompraCache.getInstance().setListaSolicitudCompra(listado);
							ListaSolicitudCompraCache.getInstance().setFechaCache();
		
						}
					}
				} 
				catch (JSONException ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
				catch (Exception ex)
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
			}
			else
			{
				Result = Constant.CODE_NOT_SERVER_RESPONSE;
			}
		}
		else
		{
			Result = Constant.CODE_NOT_SERVER_RESPONSE;
		}
	}
	
	public SolicitudCompra getSolicitudCompra(JSONObject json_solicitud)
	{
		try 
		{
			SolicitudCompra laSolicitud = new SolicitudCompra(Integer.parseInt(json_solicitud.getString(GETSOLICITUDCOMPRA_SOLICITUD_COMPRA_ID)),
																Tool.getInstance().parseStringToDate(json_solicitud.getString(GETSOLICITUDCOMPRA_FECHA_SOLICITUD_COMPRA)),
																getListaArticulosSolicitudCompra(json_solicitud.getJSONArray(GETSOLICITUDCOMPRA_DATOS_ARTICULO)),
																new TipoStatus(Integer.parseInt(json_solicitud.getString(GETSOLICITUDCOMPRA_TIPO_STATUS_ID)), 
																				json_solicitud.getString(GETSOLICITUDCOMPRA_NOMBRE_TIPO_STATUS)),
																(json_solicitud.getString(GETSOLICITUDCOMPRA_DESCRIPCION_SOLICITUD_COMPRA).equals("null") ? 
																		null:
																		json_solicitud.getString(GETSOLICITUDCOMPRA_DESCRIPCION_SOLICITUD_COMPRA)),
																Float.parseFloat(json_solicitud.getString(GETSOLICITUDCOMPRA_TOTAL_SOLICITUD_COMPRA)) 
																
															);
			return laSolicitud;
		} 
		catch (NumberFormatException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} 
		catch (JSONException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		
	}
	
	public ArticuloCarrito getArticulosSolicitudCompra(JSONObject json_articulo)
	{
		try 
		{
			
			ArticuloCarrito elArticulo = new ArticuloCarrito(new Articulo(Integer.parseInt(json_articulo.getString(GETSOLICITUDCOMPRA_ARTICULO_ID)), 
																			json_articulo.getString(GETSOLICITUDCOMPRA_NOMBRE_ARTICULO), 
																			json_articulo.getString(GETSOLICITUDCOMPRA_CODIGO_ARTICULO), 
																			null, 
																			Float.parseFloat(json_articulo.getString(GETSOLICITUDCOMPRA_PRECIO_UNITARIO_ARTICULO)), 
																			0, 
																			new TipoArticulo(Integer.parseInt(json_articulo.getString(GETSOLICITUDCOMPRA_TIPO_ARTICULO_ID)), 
																									json_articulo.getString(GETSOLICITUDCOMPRA_NOMBRE_TIPO_ARTICULO), 
																								null),  
																			null, 
																			json_articulo.getString(GETSOLICITUDCOMPRA_FOTO_ARTICULO)),
																			Integer.parseInt(json_articulo.getString(GETSOLICITUDCOMPRA_CANTIDAD_SOLICITADA_ARTICULO))
																			
												 );
			return elArticulo;
		} 
		catch (NumberFormatException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} 
		catch (JSONException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		
	}
	
	public ListaArticuloCarrito getListaArticulosSolicitudCompra(JSONArray datos_articulo)
	{
		try 
		{
			ListaArticuloCarrito listado = new ListaArticuloCarrito();
			for (int i = 0; i < datos_articulo.length(); i++ )
			{
				JSONObject json_articulo = datos_articulo.getJSONObject(i);
				listado.addArticulo(getArticulosSolicitudCompra(json_articulo));
			}
			return listado;
		} 
		catch (NumberFormatException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} 
		catch (JSONException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		
	}
	
	public String getResult()
	{
		return Result;
	}
	
}



